Den här frågan har redan svar här: Omvänd en sträng i Python (29 svar) Stängt för 4 år sedan. Jag försöker vända en sträng och använder koden nedan men det resulterande omvända listvärdet är inget. Koden: str_a = 'Detta är rörande' rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = ''. gå med (rev_word) Den returnerar TypeError. Varför?
2021-01-15 08:11:05
.reverse () returnerar Ingen. Därför bör du inte tilldela den till en variabel. Använd detta istället: stra = 'Detta är en sträng' revword = stra.split () revword.reverse () revword = ''. gå med (revword) Jag har kört koden på IDEOne åt dig så att du kan se utdata. (Observera också att utgången är stringaisThis; du kanske vill använda '' .join (revword), med ett mellanslag istället.) Observera också att metoden du har angett bara vänder på orden, inte texten. @ ron.rothman tillhandahöll en länk som beskriver hur man vänder en sträng i sin helhet. | Detta är mitt personliga favorit sätt att vända en sträng: stra = "Detta är en sträng" revword = stra [:: - 1] print (revword) # "gnirts a si sihT eller, om du vill vända ordordningen: revword = "" .join (stra.split () [:: - 1]) skriv ut (revword) # "sträng a är detta" :) | Olika reverseringar på en sträng: instring = 'Detta är en sträng' reversedstring = instring [:: - 1] tryck omvänd sträng # gnirts a si sihT wordsreversed = ''. gå med (ord [:: - 1] för ord i instring.split ()) skriv ut ordåterförda # sihT si a gnirts revwordorder = '' .join (ord för ord i instring.split () [:: - 1]) skriv ut revwordorder # string a är This revwordandorder = ''. gå med (ord [:: - 1] för ord i instring.split () [:: - 1]) skriv ut ordordorder # gnirts a si siT | För framtida referens när ett objekt har en metod som [] .reverse () utför den i allmänhet den åtgärden på objektet (dvs. listan är sorterad och returnerar ingenting, inget) i motsats till inbyggda funktioner som sorterade som utför en åtgärd på ett objekt och returnerar ett värde (dvs. den sorterade listan) | >>> s = 'detta är en sträng' >>> s [:: - 1] 'gnirts a si siht' >>> ''. gå med (omvänd (ar)) 'gnirts a si siht' | For-slingan itererar strängen från slut (sista bokstaven) till start (första bokstaven) >>> s = 'Du kan också prova det här:]' >>> rev = '' >>> för i inom intervallet (len (s) - 1, -1, -1): ... rev + = s [i] >>> rev ']: oot siht yrt nac uoY' | Baserat på kommentarer och andra svar: str_a = 'detta är en sträng' rev_word = ''. gå med (omvänd (str_a.split ())) Metodkedjning fungerar trots allt i Python ... | Listomvändning kan göras på mer än ett sätt. Som nämnts i tidigare svar är två mycket framträdande, en med omvänd () -funktion och två med skärningsfunktion. Jag ger några insikter om vilken vi ska föredra. Vi bör alltid använda reverse () -funktionen för att vända om en Python-lista. Två skäl, en på plats vändning och två snabbare än andra. Jag har några siffror som stöder mitt svar, I [15]: len (l) Ut [15]: 1000 I [16]:% timeit -n1 l.reverse () 1 slingor, bäst av 3: 7,87 µs per slinga I [17]:% timeit -n1 l [:: - 1] 1 slingor, bäst av 3: 10 µs per slinga För 1000-heltalslistan fungerade reverse () -funktionen bättre jämfört med skivning. | Inte svaret du letar efter? Bläddra bland andra frågor taggade python eller ställ din egen fråga.